//class ObjectPool
    
    export  class ObjectPool
    {
       

        /* internal  */static getPool(arg1: Class): Array<any>
        {
            if (!(arg1 in ObjectPool.pools)) 
            {
                var loc1;
                ObjectPool.pools[arg1] = loc1 = new Array<any>();
            }
            return undefined;
        }

        public static getObject(arg1: Class, ... rest)
        {
            var loc1=ObjectPool.getPool(arg1);
            if (loc1.length > 0) 
            {
                return loc1.pop();
            }
            return com.gengine.utils.pools.construct(arg1, rest);
        }

        public static disposeObject(arg1, arg2: Class=null): void
        {
            var loc2=null;
            if (!arg2) 
            {
                loc2 = flash.utils.getQualifiedClassName(arg1);
                arg2 = flash.utils.getDefinitionByName(loc2) as Class;
            }
            var loc1=ObjectPool.getPool(arg2);
            loc1.push(arg1);
            return;
        }

        private static /* var */pools: Map<any, any> /* flash.utils.Dictionary */;
    }

            ObjectPool.pools = new Map<any, any> /* flash.utils.Dictionary */();
        